package main    // 声明 main 包

import (
    "fmt"       // 导入 fmt 包，打印字符串是需要用到
    "unsafe"
)

var (  // 这种因式分解关键字的写法一般用于声明全局变量
    gaa int
    gbb int
)

const (
	//函数计算表达式的值。常量表达式中，函数必须是内置函数，否则编译不过 
    a1 = "abc"
    b2 = len(a1)
    c3 = unsafe.Sizeof(a1)
)

func main() {   // 声明 main 主函数
    var a string = "Hello"
    fmt.Println(a) // 打印 Hello World!

    var b, c int = 1, 2
    //这种不带声明格式的只能在函数体中出现
    d := 1 // var d int = 1
    fmt.Println(b, c, d)

    gaa = gbb + 1
    fmt.Println(gaa, gbb)
    gbb = gaa
    gaa = 3
    fmt.Println(gaa, gbb)

    const LENGTH int = 10
    const WIDTH int = 5  
    var area int
    // const a, b, c = 1, false, "str" //多重赋值

    area = LENGTH * WIDTH
    fmt.Printf("面积为 : %d", area)
    println()
    println(a1, b2, c3)  
}
